// 二次封装 axios => 拦截器
import axios from "axios"
import config from "../config/index";
// 设置地址 设置开发
const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro
class HttpRequest {

    constructor(baseUrl) {
        this.baseURL = baseUrl;
    }
    getInSideConfig() {
        const config = {
            baseURL: this.baseURL,
            header: {

            }
        }
        return config;
    }
    interceptors(instance) {
        instance.interceptors.request.use(function(config) {
            // 在发送请求之前做些什么
            console.log('拦截处理请求');
            return config;
        }, function(error) {
            // 对请求错误做些什么
            return Promise.reject(error);
        });

        // 添加响应拦截器
        instance.interceptors.response.use(function(response) {
            console.log('处理响应');
            return response.data;// 【重点】返回 response.data
        }, function(error) {
            console.log('处理错误');
            console.log(error);
            return Promise.reject(error);
        });
    }

    request(options) {
        // 请求
        // 有个公共的 api ：/api/getList  /api/getHome
        const instance = axios.create();
        // 技巧
        options = {...(this.getInSideConfig()), ...options }
        this.interceptors(instance);
        return instance(options);
    }
}
export default new HttpRequest(baseUrl);